<?php
#
#
# Copyright TEDECO, 2009. http://tedeco.fi.upm.es
#
# This file is part of kumenya.
#
# Kumenya is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Kumenya is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
#
#
#
?>
<?php
class User
{	
	const SCOPE = Library;

	static public function getFields ($table = FALSE) {
		$dbManager = new DBManager();
		$fields = $dbManager->MultipleTablesFields("ShowUserFields", self::SCOPE, UsersTable, $table);		

		if (!$table) {
			$password = Interfaz::CreateField (Password,PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $password);
			$checkPassword = Interfaz::CreateField (RepeatedPassword,PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $checkPassword);
		}
			
		return $fields;
		
	}

	static public function getPasswordFields () {
		$dbManager = new DBManager();
		$fields = $dbManager->TableFields (UsersTable,self::SCOPE);
		if ($fields) {
			// DELETE PASSWORD
			$fields = Interfaz::DeleteFields ($fields,Password);
			$fields = Interfaz::DeleteFields ($fields, Person);
			
			// OLD PASSWORD
			$oldPassword = Interfaz::CreateField (OldPassword,PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $oldPassword);

			// PASSWORD
			$password = Interfaz::CreateField (NewPassword,PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $password);
			
			// REPEAT PASSWORD
			$checkPassword = Interfaz::CreateField (RepeatedPassword,PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $checkPassword);

		}			
		return $fields;
	}
	
	static public function ChangePassword ($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('ChangePassword',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}
	
	static public function getAuthenticationFields () {
		$dbManager = new DBManager();
		$fields = $dbManager->TableFields (UsersTable,self::SCOPE);
		if ($fields) {
			$password = Interfaz::CreateField ("Password",PasswordType,NO);
			$fields = Interfaz::AddFields($fields, $password);
		}			
		return $fields;
	}

	static public function Register ($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('NewUser',self::SCOPE,$filledFields);		
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function Authenticate ($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('IdentifyUser',self::SCOPE,$filledFields);

		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}

	static public function Search ($criterias = array()) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('SearchUsers',self::SCOPE, $criterias);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table;
	}

	static public function SeeDetails ($criterias = array()) {
		$dbManager = new DBManager();
		$table = $dbManager->ExecuteSearchProcedure ('UserDetail',self::SCOPE, $criterias);
		if (!is_array($table)) {
			Interfaz::Error($dbManager->GetError());
			return FALSE;
		}
		return $table[0];
	}

	static public function Modify ($filledFields) {
		$dbManager = new DBManager();
		$result = $dbManager->ExecuteProcedure ('UserModification',self::SCOPE,$filledFields);
		if ($result)
			Interfaz::Result($dbManager->GetResult());
		else
			Interfaz::Error($dbManager->GetError());
		return $result;		
	}
	
}
?>